package travelDreamEntities;

import java.io.Serializable;

import javax.persistence.*;

import org.apache.commons.codec.digest.DigestUtils;

import dataTransferOblect.ClienteDTO;



/**
 * The persistent class for the utenti database table.
 * 
 */
@Entity
@NamedQuery(name="Utenti.findAll", query="SELECT u FROM Utenti u")
public class Utenti implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	private String userName;

	
	private String password;

	//bi-directional one-to-one association to Cliente
	@OneToOne(mappedBy="utenti")
	private Cliente cliente;

	//bi-directional one-to-one association to Impiegato
	@OneToOne(mappedBy="utenti")
	private Impiegato impiegato;

	//bi-directional one-to-one association to Autenticazione
	@OneToOne
	@JoinColumn(name="userName" ,insertable=false, updatable=false)
	private Autenticazione autenticazione;

	public Utenti() {
	}
	
	public Utenti(ClienteDTO cliente){
		this.userName= cliente.getUsername();
		this.password= DigestUtils.sha256Hex(cliente.getPassword());	
	}
	

	public String getUserName() {
		return this.userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	/**
     * @return the password in SHA256 HEX representation
     */
	public String getPassword() {
		return this.password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public Cliente getCliente() {
		return this.cliente;
	}

	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}

	public Impiegato getImpiegato() {
		return this.impiegato;
	}

	public void setImpiegato(Impiegato impiegato) {
		this.impiegato = impiegato;
	}

	public Autenticazione getAutenticazione() {
		return this.autenticazione;
	}

	public void setAutenticazione(Autenticazione autenticazione) {
		this.autenticazione = autenticazione;
	}

}